package br.ita.trucocearense.server.core;

import java.io.Serializable;

import br.ita.trucocearense.common.core.interfaces.remoteobjects.ObjCarta;

public class Carta implements ObjCarta, Serializable {

	private String codigo;
	private int valorInteiro;
	private boolean zap = false;
	private boolean espiao = false;
	private int naipe;
	private int numero;

	public Carta(ObjCarta carta){
		this.setCodigo(carta.getCodigo());
		this.setValorInteiro(carta.getValorInteiro());
		this.setEspiao(carta.isEspiao());
		this.setZap(carta.isZap());
	}


	public Carta(String codigo){
		this.setCodigo(codigo);
	}

	public Carta(String codigo,Carta manilha){
		this.setCodigo(codigo);
		this.setValorInteiro(manilha);
	}


	public void setZap(boolean zap) {
		this.zap = zap;
	}

	public void setEspiao(boolean espiao) {
		this.espiao = espiao;
	}
	
	@Override
	public String getCodigo() {
		return this.codigo;
	}

	@Override
	public int getValorInteiro() {
		return this.valorInteiro;
	}

	private void setCodigo(String codigo) {
		this.codigo = codigo;
		if (codigo.length() == 2){
			this.setNumero(Integer.parseInt(codigo.substring(0, 1)));
			this.setNaipe(Integer.parseInt(codigo.substring(1, 2)));
		} else{
			this.setNumero(Integer.parseInt(codigo.substring(0, 2)));
			this.setNaipe(Integer.parseInt(codigo.substring(2, 3)));
		}
		if (this.getNumero() == 1)
			this.setEspiao(true);
	}

	public void setValorInteiro(Carta manilha) {
		this.valorInteiro = this.getNumero();
		if ((manilha.getNumero()+1 == this.valorInteiro) || (manilha.getNumero() == 11 && this.valorInteiro == 2)){
			this.valorInteiro += 10 + this.getNaipe();	
			if (this.getNaipe() == 4)
				this.setZap(true);				
		}
	}

	public void setValorInteiro(int valorInteiro) {
		this.valorInteiro = valorInteiro;
	}
	
	public int getNaipe() {
		return naipe;
	}

	public void setNaipe(int naipe) {
		this.naipe = naipe;
	}

	public int getNumero() {
		return numero;
	}

	public void setNumero(int numero) {
		this.numero = numero;
	}

	@Override
	public boolean isEspiao() {
		// TODO Auto-generated method stub
		return this.espiao;
	}

	@Override
	public boolean isZap() {
		// TODO Auto-generated method stub
		return this.zap;
	}

}
